#pragma once
#include <cl/cl.h>
struct v3d ///I only ended up defining the operators which i needed, and as such this is quite incomplete
{

    double x, y, z;

    v3d();

    v3d(double px, double py, double pz);

    v3d & operator()(double px, double py, double pz);


    v3d & operator+=(v3d &other);

    v3d & operator-=(v3d &other);

    v3d & operator/=(v3d &other);

    v3d & operator/=(double other);

    v3d operator + (v3d &other);

    v3d operator - (v3d&other);

    v3d operator / (double value);

    v3d operator * (v3d &o);

    v3d operator * (double other);

    v3d & operator = (cl_float4 &f);

    double magnitude();

    v3d operator -();

    v3d abs();

    v3d normalise();

};
